Excel Tim
 
VBA Kodlama
VBA (Visual Basic for Applications), y²llar boyunca Microsoft Office uygulamalar² ile kullan²lacak programlama dili oldu. VBA programc²lar²n (ve gⁿτlⁿ kullan²c²lar²n) a■a≡²dakileri yapmas²n² sa≡layan basit bir programlama dilidir:

- Office uygulamalar²n² geni■letmek ve otomatize etmek
- Office uygulamalar²n² ve verilerini, ba■ka uygulamalar ile entegre etmek

Temel fikir gerτekten basittir: insanlar²n uygulamalar² ÷zgⁿnle■tirebilmeleri ve kendi ortamlar²na uygun beceriler ekleyebilmeleri iτin, birkaτ uygulama iτin ortak bir dil ve programlama ortam² olu■turmak. Bu yⁿzden VBA'in basit olmas² gerekiyordu. VBA'i gereksiniminiz olan veya ⁿ■enebilece≡imiz herhangi bir tⁿr uygulamay² geli■tirmek iτin kullanmazs²n²z. VBA sadece temel denetim yap²lar²n², matematik ve karakter katar² fonksiyonlar²n² ve de≡i■ken kullan²m becerilerini sunar. VBA'in as²l gⁿcⁿ, onu destekleyen uygulamalar²n nesnelerinden kaynaklan²r.

Microsoft, VBA 5'in piyasaya sⁿrⁿlmesiyle birlikte bu dili ⁿrⁿnlerine programlanabilir ÷zellikler eklemek isteyen ⁿreticilere lisanslamaya ba■lad²: ╓rne≡in Autodesk AutoCAD. AutoCAD y²llard²r programlanabilen bir ortamd² ama, programlama dili ÷zgⁿndⁿ ve ba■ka uygulamalar ile payla■²lam²yordu. Ba■ka pek τok ⁿretici de yaz²l²mlar²na programlama dilleri veya ba■ka otomizasyon y÷ntemleri eklediler. Ancak bu τok say²da uygulamadan olu■an parτalar² bir araya getirmede tutkal i■levi g÷recek olan global bir dilin gereklili≡i aτ²kt². Sonunda Microsoft VBA'in di≡er ⁿreticilerin bu gereksinimlerini kar■²layan bir sⁿrⁿmⁿyle ortaya τ²kt², ▄stelik VBA Windows alt²nda uygulamalar² otomatize etmek iτin kullan²lan evrensel bir dil olma yolunda.

Gⁿnⁿmⁿzde τo≡u ■irket rafta sat²lan yaz²l²mlar² kullan²r ve onlar² ÷zgⁿnle■tirme gereksinimleri vard²r. Amerika'daki i■letmelerin yar²s²ndan τo≡u Microsoft Office ⁿrⁿnlerini kullan²r. ▄stelik bu i■letmelerin pek τo≡u da bu uygulamalar² kendi i■letme gereksinimlerine uyarlamak iτin VBA kullan²r. Bu e≡ilim gelecekte sⁿrecek ve gⁿτlenecek. Uygulamalar² sadece ÷zgⁿnle■tirme gereksinimi de≡il, ayn² zamanda onlar² ileti■im kuracak ■ekilde birbirine ba≡lama gereksinimi var. VBA bunu da yapar, ⁿstelik bunun bir sonucu olarak, VBA programc²lar²na olan gereksinim de ÷nⁿmⁿzdeki birkaτ y²l iτerisinde artacak.

Gⁿnⁿmⁿz uygulamalar² o kadar gⁿτlⁿ ve o kadar τok ÷zelli≡e sahip ki, ÷zgⁿn uygulamalar geli■tirmek art²k mant²kl² de≡il. Bunun yerine mevcut uygulamalar² ÷zgⁿnle■tirerek bir arada τal²■malar²n² sa≡lamak daha mant²kl². Office 97 uygulamalar² bile tipik bir ■irketin gⁿnlⁿk bilgisayar i■lemlerini kar■²lamaya yeterlidir. VBA deste≡i veren τok say²da ⁿτⁿncⁿ parti uygulamay² da dⁿ■ⁿnⁿrseniz, onun ■irket ortamlar²ndaki ÷nemini kolayca tahmin edebilirsiniz.

Sybex Yazarlar² - Microsoft Visual Basic 6 Temel Kullan²m Klavuzu

VBA Nedir?
Aτ²l²m², "Visual Basic For Application" Vba Excel Ortam²nda Visual Basic programla diliyle uygulamalar geli■tirmek manas²na gelir. (Konumuz Excel oldu≡u iτin Excel ortam² diyoruz. Bu MSAccess veya MSWord' de olabilir vs...) Sybex grubunun aτ²klamalar²na biz de ayn² ■ekilde kat²l²yoruz.
Program²n ya da Program
Parτac²klar²n² Nas²l Deneyebiliriz?
Program parτas²n² her ne olursa olsun Vba kod sayfas²nda
Sub...End Sub deyimi aras²na yazmal²s²n²z. Daha sonra Excel tablosuna da Formlar Araτ ╟ubu≡u'nda bulunan dⁿ≡me ikonuna t²klayarak, Excel τal²■ma sayfas²na τizin.Dⁿ≡me ⁿzerinde sa≡ tu■a t²klay²n ve aτ²lan menⁿden Makro Ata komutunu seτin. ╟²kan pencereden makro ad²n² t²klay²n ve Tamam dⁿ≡mesine bas²n. Art²k kod sayfas²ndaki program²n²z² dⁿ≡meye atam²■ oldunuz. Program² τal²■t²rmak iτin Dⁿ≡meye t²klaman²z yeterli. Biz yine de bu anlatt²klar²m²z² basit bir ÷rnekle a■a≡²da ad²m ad²m izah edelim.

Elimizde bulunan Program parτas² Range("B2").Select olsun.
1. VBA Kod sayfas² aτ²l²r.
2. E≡er bir modⁿl aτ²k de≡ilse Araτ ╟ubuklar²ndan yada Menⁿden Modⁿl komutunu t²klay²n ve Madⁿl sayfas²n² aτ²l²r.
3. Kod sayfas²na a■a≡²daki gibi program yaz²l²r.

Sub Makrom()
Range("B2").Select
End Sub
Fark etti≡iniz gibi Sub deyiminden sonra program²m²za Makrom ismini verdik.
4.▐imdi de Excel ╟al²■ma sayfas²na geτilir. E≡er aτ²k de≡il ise Formlar araτ τubu≡u aτ²l²r.
5. Bu τubuk ⁿzerindeki Dⁿ≡me ikonuna t²klan²r ve ╟al²■ma sayfas²na bir dⁿ≡me τizilir.
6.Makro penceresi otomatik aτ²lacakt²r. E≡er aτ²lmad²ysa dⁿ≡menin ⁿzrinde farenin sa≡ tu■una t²klan²r ve Makro penceresi aτ²l²r.
7.Aτ²lan makro penceresinde Makrom ismine t²klan²r ve Tamam dⁿ≡mesine t²klan²r.

▌■te bu kadar, Makroyu τal²■t²rmak iτin Excel ╟al²■ma Sayfas²ndaki dⁿ≡meye t²klamak yeterli. Yukardaki Makro sonucunda dⁿ≡meye t²klan²rsa B2 hⁿcresi seτilecektir.

Yeni ba■layanlar² da dⁿ■ⁿndⁿ≡ⁿmⁿz iτin en basit kodlamadan ba■layarak a■a≡²da vermeye τal²■aca≡²z. E≡er numaraland²rma varsa birden fazla y÷ntem ÷nerdi≡imiz manas²na gelir. Bazan uzun kodlamadan ziyade k²sa kodlar tercih edilir.

De≡i■ik Macro Kod ╓rnekleri
1. Hⁿcre Seτmek.
Range("B2").Select
Cells(2,1).Select
[B2].Select

2. Hⁿcreye de≡er atamak.
Range("B2").Value=100 'say²sal de≡er
Range("B2").Value="M. Temel Korkmaz" 'Text; t²rnak iτinde

3. Hⁿcredeki Fontun Bⁿyⁿklⁿ≡ⁿnⁿ de≡i■tirmek.
Range("B2").Font.Size=20

4. Hⁿcredeki fontun ad²n² de≡i■tirmek.
Range("B2").Font.Name="Verdana"

5. Hⁿcredeki fontu Kal²n,▌talic ve Alt² ╟izgili yapmak.
Range("B2").Font.Bold = True
Range("B2").Font.Italic = True
Range("B2").Font.Underline = xlUnderlineStyleSingle

veya

Range("B2").Select
Selection.Font.Bold = True
Selection.Font.Italic = True
Selection.Font.Underline = xlUnderlineStyleSingle

6. Hⁿcrenin dolgu rengini de≡i■tirmek.
Range("B2").Interior.ColorIndex = 6 'Sar² renk

7.Hⁿcrenin Fontunun rengini de≡i■tirmek.
Range("B2").Font.ColorIndex = 3 'K²rm²z² renk

8. Hⁿcreye Formⁿl yazd²rmak.
Range("B2").Formula="=A1+A2"'A1 ve A2 hⁿcresini toplar,B2 ye yazd²r²r.

9. Aktif olan hⁿcrenin etraf²ndaki hⁿcreyi seτmek
ActiveCell.Offset(1, 0).Select 'Aktif hⁿcrenin alt²dakini seτer.
ActiveCell.Offset(-1, 0).Select 'Aktif hⁿcrenin ⁿstⁿndekini seτer.
ActiveCell.Offset(0, 1).Select 'Aktif hⁿcrenin sa≡²ndakini seτer.
ActiveCell.Offset(0, -1).Select 'Aktif hⁿcrenin solundakini seτer.

10. Aktif olan hⁿcrenin belirtilen kadar uza≡²ndaki hⁿcreyi seτmek.
ActiveCell.Offset(0, 5).Select 'Aktif hⁿcrenin sa≡²ndaki 5. hⁿcreyi seτer.

11. Aktif hⁿcreden belirtilen uzakl²ktaki hⁿcreye de≡er atamak.
ActiveCell.Offset(1,1).Value = "Muhammed" 'Aktif hⁿcrenin alt²nda ve sa≡²ndaki hⁿcreye Muhammed yazd²r²r.

12. Aktif hⁿcrenin ⁿzerindeki iki hⁿcrenin de≡erleri toplan²r ve sonuτ aktif olan hⁿcreye yaz²l²r.
Sub toplama()
t1 = ActiveCell.Offset(-1, 0).Value
t2 = ActiveCell.Offset(-2, 0).Value
ActiveCell.Value = t1 + t2
End Sub

13. Seτili hⁿcrelerdeki biτimleri siler.
Selection.ClearFormats

14.Seτili hⁿcreleri a■a≡² ÷teler.
Range("A1:A5").Select 'A1 ile A5 aras²ndaki hⁿcreler seτilir.
Selection.Insert Shift:=xlDown 'Seτimi a■a≡² kayd²r²r. Burada sadece seτili olan 5 adet hⁿcre a■a≡² kayd²r²l²r.

15. Seτili hⁿcrelere ait hⁿm sat²r² ÷telemek.
Range("A1:A5").Select
Selection.EntireRow.Insert '14. koddan farkl² olarak seτili olan hⁿcrelere ait 1 ila 5 aras²ndaki tⁿm sat²rlar 5 sat²r a■a≡² ÷telenir.

16. Seτili hⁿcrelere ait tⁿm sⁿtunu ÷telemek.
Range("D6:E7).Select
selection.EntireColumn.Insert

17.Aτ²k olan Excel ╟al²■ma Kitab²n²n belirtilen sayfas²ndaki istenen hⁿcreye de≡er atar.
Workbooks("Kitap1.xls").Worksheets("Sayfa1").Range("A1").Value = 3

18.Yap²lan seτimlerde bo■ olmayan hⁿcre say²s²n² verir.
Sub hucresayisi()
Dim kontur As Integer
kontur = Application.CountA(Selection)
MsgBox "Seτimdeki dolu hⁿcrelerin say²s²:" & kontur
End Sub

19. 18. maddedeki kodlamada 'CountA' da bulunan 'A' kald²r²l²rsa seτimde sadece kaτ hⁿcrede say² (rakam) varsa onlar²n adedini verir.
Application.Count(Selection)

20.Seτili hⁿcrelerin say²s²n² verir.
Selection.Count

21. Seτimin sat²r say²s²n² verir.
Selection.Rows.Count

22. Seτimin sⁿtun say²s²n² verir.
Selection.Columns.Count

23. De≡i■ik b÷lgelerdeki seτili alanlar²n sⁿtun say²s²n² verir.
Sub sutunsayisi()
Dim i As Integer
Dim alankonturu As Integer

alankonturu = Selection.Areas.Count
If alankonturu <= 1 Then
MsgBox "Bu seτimin kapsad²≡² " & Selection.Columns.Count & "_
sⁿtundur"
Else
For i = 1 To alankonturu
MsgBox "Alan " & i & " deki seτimin kapsad²≡² " & _
Selection.Areas(i).Columns.Count & " sⁿtun"
Next i
End If
End Sub

24.Seτili hⁿcrenin alt²nda veriler varsa onlar² seτer. ▌lk bo■ hⁿcreden sonra ilk de≡er olan hⁿcreyi seτer.
Range(ActiveCell,ActiveCell.End(xlDown)).Select

25. 24. de ⁿstteki hⁿcreler iτin ayn² ilemi yapar.
Range(ActiveCell,ActiveCell.End(xlUp)).Select

26. 24. de sa≡daki hⁿcreler iτin ayn² i■lemi yapar.
Range(ActiveCell,ActiveCell.End(xlToRight)).Select

27. 24. de soldaki hⁿcreler iτin ayn² i■lemi yapar.
Range(ActiveCell,ActiveCell.End(xlToLeft)).Select

28. Aktif hⁿcrenin etraf²ndaki dolu hⁿcreleri seτer.
ActiveCell.CurrentRegion.Select

29. Seτimin etraf²ndaki dolu hⁿcreleri seτer.
Selection.CurrentRegion.Select

30. Aktif hⁿcrenin bulundu≡u sⁿtunun tamam²n² seτer.
ActiveCell.EntireColumn.Select

31. Seτili hⁿcrelerin bulunduklar² sⁿtunlar² tamamen seτer.
Selection.EntireColumn.Select

32. ╟al²■ma sayfas²nda bulunan bⁿtⁿn hⁿcreleri seτer.
Cells.Select

33. Dolu hⁿcrelerden sonraki ilk bo■ hⁿcreyi seτer. (Sⁿtunlar iτin.)
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select '(0,1) oldu≡u zaman sat²rlar iτin olur.
Loop

 
ExcelTim',in haz²rlad²≡² Offis2beta
program²n² buradan kopyalayabilirsiniz.
 
ana sayfaya d÷n